// pages/pay/pay.js
const app = getApp();
const util = require("../../utils/util.js");
Page({

  /**
   * 页面的初始数据
   */
  data: {
    showAddress: false, //显示地址,true:有选择地址，false：未选择地址
    itemList: null, // 订单列表
    amount: null, //总价格
    orderUser: {}, // 购买用户信息
    userInfo: null,  //用户登录信息
    orderStatus: 0,   //订单状态 0:未支付  1:已支付
    payStatus: 2,   //支付状态  0：支付宝 1：微信 2：其他
    shopCarInfo:{}
  },

  //初始化加载数据
  loadData: function (options) {
    const { itemList, amount, shopCarInfo } = JSON.parse(options.order); //获取订单信息
    const userInfo = app.getGlobalUserInfo(); //获取登录信息
    this.setData({
      itemList,
      amount,
      userInfo,
      shopCarInfo
    })
  },

  /** 获取用户收货地址 */
  getAddress:function() {
    let that = this;
    //模拟器无法显示添加地址和选择地址，可以真机调试
    if (wx.chooseAddress){
      wx.chooseAddress({
        success(res) {
          if(res){
            let orderUser = that.data.orderUser;
            orderUser.userName = res.userName; //姓名
            orderUser.userPhone = res.telNumber;  //电话
            orderUser.userAddress = res.provinceName + ' ' + res.cityName + ' ' + res.countyName + ' '+ res.detailInfo; //地址

            that.setData({
              showAddress: true,
              orderUser
            })
          }
        },
        fail(error) {
          console.log(error);
        }
      })
    }else{
      console.log("当前微信版本不支持chooseAddress");
    }
  },

  /** 生成订单消息 */
  createOrder(e) {
    let that = this;
    const order = this.data.orderUser;
    if (JSON.stringify(order) === '{}') {
      wx.showToast({
        title: '请先添加收货地址',
        icon: 'none'
      })
      return;
    }

    const userInfo = this.data.userInfo;  //用户登录信息
    order.userOpenid = userInfo.openid; //用户的openid
    order.amount = util.changeY2F(this.data.amount,100);  //订单总额
    order.orderStatus = 1;  //订单状态，已支付 
    order.payStatus = 2;    //支付方式 其他
    order.orderNum = util.orderCode();   //订单号
    //订单细节价格处理
    let details = JSON.parse(JSON.stringify(this.data.itemList));
    for(let i = 0; i < details.length; i++){
      let detail = details[i];
      detail.bookPrice = util.changeY2F(detail.bookPrice,100);
    }
    order.orderDetails = details;  //订单细节
    //console.log(order);
    wx.request({
      url: app.serverUrl + "/order",
      method: "POST",
      header: {
        'content-type': 'application/json', // 默认值
        'userId': userInfo.id, // 用户id
        "userToken": userInfo.userToken // 用户 token
      },
      data: order,
      success: e => {
        if (e.data.status === 200) {
          //console.log("成功")
          // 清除购物车对应的东西
          const shopCarInfo = this.data.shopCarInfo;
          let shopList = shopCarInfo.shopList;
          const itemList = this.data.itemList;
          // 移除对应购物车数据
          itemList.forEach(res => {
            shopList.splice(shopList.findIndex(e => {
              if (res.bookId === e.bookId) {
                // 减掉购物车数量
                shopCarInfo.shopNum -= res.bookQuantity
                return true;
              }
            }), 1)
          })
          //缓存购物车
          let carInfo = that.copyCart(shopCarInfo);
          that.saveCart(carInfo); //缓存购物车
          wx.showToast({
            title: '支付成功',
            icon: 'success',
            duration: 2000,
            success: res => {
              setTimeout(() => {
                wx.navigateBack({
                  delta: 1
                });
              }, 2000)
            }
          })
        } else if (e.data.status === 500) {
          wx.showToast({
            title: result.data.msg,
            icon: 'none'
          })
          //console.log("失败");
          //app.setGlobalUserInfo(null)
        }
      }
    })
  },

  //缓存购物车
  saveCart: function (shopCarInfo) {
    let that = this;
    wx.request({
      url: app.serverUrl + '/cart/save',
      method: "POST",
      header: {
        'content-type': 'application/json', // 默认值
      },
      data: shopCarInfo,
      fail: error => {
        wx.hideLoading({
          title: '与网络断开连接'
        })
      },
      success: res => {
        //console.log(res);
        if (res.data.status != 200) {
          console.log("出错：" + res.data.errMsg);
        }
      }
    })
  },

  /**
  * 拷贝对象，并对价格处理
  */
  copyCart: function (shopCarInfo) {
    //处理价格
    let carInfo = JSON.parse(JSON.stringify(shopCarInfo));  //拷贝对象
    let cartList = carInfo.shopList;
    for (let i = 0; i < cartList.length; i++) { //价格处理
      cartList[i].bookPrice = util.changeY2F(cartList[i].bookPrice, 100);
    }
    carInfo.shopList = cartList;
    return carInfo;
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.loadData(options); //初始化加载数据
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})